// import json from '@rollup/plugin-json'; // 可以用import .. form ./package.json 中的参数
import { terser } from 'rollup-plugin-terser';
import resolve from '@rollup/plugin-node-resolve'; // 帮助 Rollup 查找外部模块(就是引入第三方的库)
import commonjs from '@rollup/plugin-commonjs'; // 引入第三方包中含有commenjs的,先通过这个插件转为module类型的在rollup中使用,避免出问题
import babel from '@rollup/plugin-babel';
// import typescript from 'rollup-plugin-typescript2';
import { name } from './package.json';

const extensions = ['.js', '.ts', '.tsx', '.json'],
  env = process.env.NODE_ENV,
  buildMin = env === 'production';

const config = {
  // 入口
  input: 'src/index.ts',
  //   出口
  output: [
    // ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽umd模式, cjs和amd的结合,需要name
    {
      file: 'dist/index.js',
      format: 'umd',
      name,
      globals: {
        // 告诉rollup lodash模块等同于-,用于umd/iife规范的代码
        // lodash: '_',
      },
    },
    // △△△△△△△△△△△△△△△△△
  ],
  //   引入插件
  plugins: [
    // 此次配置忽略ts,ts的配置在babel中
    // typescript({ useTsconfigDeclarationDir: true }),
    babel({
      extensions,
      babelHelpers: 'runtime',
      exclude: 'node_modules/**', // 排除文件
      include: 'src/**',
    }),
    // json(),
    commonjs(),
    resolve({
      // 将自定义选项传递给解析插件
      moduleDirectories: ['node_modules'],
      // 省略引入文件时的后缀
      extensions,
    }),
  ],
  // 指出应将哪些模块视为外部模块
  external: [
    'lodash',
    // /@babel\/runtime-/
  ],
};

if (buildMin) {
  config.plugins.push(terser());
}

export default config;
